/**
 * MySQL MCP 客户端 - 简单易用版本
 * 使用方法：
 * 1. 复制此文件到您的项目中
 * 2. 确保MySQL MCP服务在 http://localhost:8099 运行
 * 3. 直接调用方法即可
 */

class SimpleMySQLClient {
  constructor(baseUrl = 'http://localhost:8099') {
    this.baseUrl = baseUrl;
    this.requestId = 0;
  }

  async callTool(name, args = {}) {
    const request = {
      jsonrpc: "2.0",
      id: (++this.requestId).toString(),
      method: "tools/call",
      params: { name, arguments: args }
    };

    const response = await fetch(`${this.baseUrl}/mcp/call`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(request)
    });

    const result = await response.json();
    if (result.error) {
      throw new Error(`MCP错误: ${result.error.message}`);
    }
    return result.result;
  }

  // 便捷方法
  async testConnection() {
    return this.callTool('test_connection');
  }

  async listTables() {
    return this.callTool('list_tables');
  }

  async query(sql, params = []) {
    return this.callTool('query', { sql, params });
  }

  async execute(sql, params = []) {
    return this.callTool('execute', { sql, params });
  }

  async describeTable(tableName) {
    return this.callTool('describe_table', { table: tableName });
  }

  // 高级便捷方法
  async getTableData(tableName, limit = 10) {
    return this.query(`SELECT * FROM ${tableName} LIMIT ${limit}`);
  }

  async getTableStructure(tableName) {
    return this.describeTable(tableName);
  }

  async findTablesByPattern(pattern) {
    const tables = await this.listTables();
    return tables.tables.filter(table => 
      table.toLowerCase().includes(pattern.toLowerCase())
    );
  }
}

// 使用示例
async function example() {
  const db = new SimpleMySQLClient();
  
  try {
    // 测试连接
    console.log('连接状态:', await db.testConnection());
    
    // 获取所有表
    const tables = await db.listTables();
    console.log('数据库表:', tables.tables);
    
    // 查询用户表数据
    const users = await db.getTableData('sys_user', 5);
    console.log('用户数据:', users);
    
    // 获取表结构
    const structure = await db.getTableStructure('sys_user');
    console.log('表结构:', structure);
    
    // 查找包含"user"的表
    const userTables = await db.findTablesByPattern('user');
    console.log('用户相关表:', userTables);
    
  } catch (error) {
    console.error('操作失败:', error.message);
  }
}

// 导出供其他模块使用
if (typeof module !== 'undefined' && module.exports) {
  module.exports = SimpleMySQLClient;
}

// 浏览器环境直接使用
if (typeof window !== 'undefined') {
  window.SimpleMySQLClient = SimpleMySQLClient;
} 